/*
 * Copyright (c) 2012 SUBSECRETARIA DEFENSORIA DEL ESPACIO PUBLICO - SDEP.
 * All Rights Reserved.
 * This software is the confidential and proprietary information of SDEP
 * Developed By CONSTULT-SOFT S.A, Development Team 2012.
 *
 */
package co.gov.medellin.sdep.sisdep.domain.pev;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;


import co.gov.medellin.sdep.sisdep.domain.BaseController;
import co.gov.medellin.sdep.sisdep.domain.MessageModalWindowController;
import co.gov.medellin.sdep.sisdep.pev.exception.SolicitudPEVMovilException;
import co.gov.medellin.sdep.sisdep.pev.exception.SolicitudPEVMovilRuntimeException;
import co.gov.medellin.sdep.sisdep.pev.service.ISolicitudPEVMovilService;
import co.gov.medellin.sdep.sisdep.common.AppConstants;
import co.gov.medellin.sdep.sisdep.model.SolicitudPEVMovil;

/**
 * @author Usuario
 * 
 */
public class SolicitudPEVMovilController extends BaseController implements
		Serializable {

	/**
	 * generated serial version
	 */
	private static final long serialVersionUID = -3285110767384990403L;

	/** bean para el manejo del formulario de busqueda SolicitudPEVMovil */
	private SolicitudPEVMovil solicitudPEVMovilSearch = new SolicitudPEVMovil();

	/** Objeto contenedor del listado de SolicitudPEVMovil luego de una consulta. */
	private transient DataModel solicitudPEVMovilListModel;

	/** bean para el manejo del formulario de creacion/edicion. SolicitudPEVMovil */
	private SolicitudPEVMovil solicitudPEVMovil = new SolicitudPEVMovil();

	/** instancia de servicio solicitudPEVMovilService */
	private ISolicitudPEVMovilService solicitudPEVMovilService;

	/**
	 * Constructor por defecto, inicializa los elemento basicos del Controlador
	 */
	public SolicitudPEVMovilController() {
		this.solicitudPEVMovilListModel = new ListDataModel();
	}
	// --------------------------------------------------------------------
	// --- metodos para atender acciones init()
	// --------------------------------------------------------------------

	/**
	 * 
	 * @return String
	 */
	public String searchSolicitudPEVMovilByKey() {
		String msg = "";
		try {
			List valores = null;
			valores = getSolicitudPEVMovilService().load(1, 10,
					this.solicitudPEVMovilSearch);
			this.solicitudPEVMovilListModel.setWrappedData(valores);
		} catch (Exception e) {
			msg = e.getMessage();
			e.printStackTrace(System.err);
		}
		if (this.solicitudPEVMovilListModel.getWrappedData() == null) {
			msg = AppConstants.NO_RECORDS_FOUND;
		} else {
			if (((List) this.solicitudPEVMovilListModel.getWrappedData()).isEmpty()) {
				msg = AppConstants.NO_RECORDS_FOUND;
			}
		}
		((MessageModalWindowController) getBean("messageController"))
				.setSuccessMessage(msg, null, null);
		return AppConstants.SOLICITUD_PEV_MOVIL_SEARCH_VIEW;
	}

	/**
	 * 
	 * @return String
	 */
	public String searchSolicitudPEVMovilByRadicado() {
		String msg = "";
		try {
			List valores = null;
			valores = getSolicitudPEVMovilService().loadByRadicado(1, 10,
					this.solicitudPEVMovilSearch);
			this.solicitudPEVMovilListModel.setWrappedData(valores);
		} catch (Exception e) {
			msg = e.getMessage();
			e.printStackTrace(System.err);
		}
		if (this.solicitudPEVMovilListModel.getWrappedData() == null) {
			msg = AppConstants.NO_RECORDS_FOUND;
		} else {
			if (((List) this.solicitudPEVMovilListModel.getWrappedData()).isEmpty()) {
				msg = AppConstants.NO_RECORDS_FOUND;
			}
		}
		((MessageModalWindowController) getBean("messageController"))
				.setSuccessMessage(msg, null, null);
		return AppConstants.SOLICITUD_PEV_MOVIL_SEARCH_VIEW;
	}
	
  /**
	 * Metodo que permite espeficicar la funcionalidad para la gestion [Crear / Actualizar] de un elmento tipo:
	 * SolicitudPEVMovil.
	 *     
	 * @author programador.java@consult-soft.com  05-06-2012
	 * @return String Vista a la cual debe retornar
	 * 	 
	 */
	public String manage() {
		String returnView = AppConstants.SOLICITUD_PEV_MOVIL_SEARCH_VIEW;
		if(this.solicitudPEVMovil.getId() == null) {
       returnView = create();
		} else {
       returnView = update();
		}
		return returnView;
	}

	/**
	 * 
	 * @return
	 */
	public String create() {
		String msg = AppConstants.DEFAULT_ERROR;
		try {
			if (this.solicitudPEVMovil.getId() == null) {
				solicitudPEVMovil.setIdPevMovil(new Long(solicitudPEVMovil.getIdPevMovilStr()));
				solicitudPEVMovil.setIdTipoVehiculo(new Long(solicitudPEVMovil.getIdTipoVehiculoStr()));
				try{solicitudPEVMovil.setIdTipoDto(new Long(solicitudPEVMovil.getIdTipoDtoStr()));}catch(Exception e){solicitudPEVMovil.setIdTipoDto(new Long(0));}
				if(solicitudPEVMovil.isPermisoTransitoChk())
					solicitudPEVMovil.setPermisoTransito("S");
				else
					solicitudPEVMovil.setPermisoTransito("N");
				getSolicitudPEVMovilService().insert(this.solicitudPEVMovil);
				msg = AppConstants.SUCCESS_CREATE;
			}
		} catch (SolicitudPEVMovilException e) {
			msg = e.getEndUserMessage();
			e.printStackTrace(System.err);
		} catch (SolicitudPEVMovilRuntimeException e) {
			msg = e.getEndUserMessage();
			e.printStackTrace(System.err);
		}
		((MessageModalWindowController) getBean(AppConstants.MESSAGE_CONTROLLER_BEAN))
				.setSuccessMessage("- solicitudPEVMovil " + msg, null, null);
		return AppConstants.SOLICITUD_PEV_MOVIL_SEARCH_VIEW;
	}

	/**
	 * 
	 * @return
	 */
	public String update() {
		String msg = AppConstants.DEFAULT_ERROR;
		try {
			if (this.solicitudPEVMovil.getId() != null) {
				solicitudPEVMovil.setIdPevMovil(new Long(solicitudPEVMovil.getIdPevMovilStr()));
				solicitudPEVMovil.setIdTipoVehiculo(new Long(solicitudPEVMovil.getIdTipoVehiculoStr()));
				try{solicitudPEVMovil.setIdTipoDto(new Long(solicitudPEVMovil.getIdTipoDtoStr()));}catch(Exception e){solicitudPEVMovil.setIdTipoDto(new Long(0));}
				if(solicitudPEVMovil.isPermisoTransitoChk())
					solicitudPEVMovil.setPermisoTransito("S");
				else
					solicitudPEVMovil.setPermisoTransito("N");
				getSolicitudPEVMovilService().update(this.solicitudPEVMovil);
				msg = AppConstants.SUCCESS_UPDATE;
			}
		} catch (SolicitudPEVMovilException e) {
			msg = e.getEndUserMessage();
			e.printStackTrace(System.err);
		} catch (SolicitudPEVMovilRuntimeException e) {
			msg = e.getEndUserMessage();
			e.printStackTrace(System.err);
		}
		((MessageModalWindowController) getBean(AppConstants.MESSAGE_CONTROLLER_BEAN))
				.setSuccessMessage("- Valor Tipo Maestra " + msg, null, null);
		return AppConstants.SOLICITUD_PEV_MOVIL_SEARCH_VIEW;
	}

	// --------------------------------------------------------------------
	// --- metodos para atender acciones end()
	// --------------------------------------------------------------------

	// --------------------------------------------------------------------
	// --- metodos para atender reglas de navegacion init()
	// --------------------------------------------------------------------

	/**
	 * 
	 */
	public String createSolicitudPEVMovil() {
		solicitudPEVMovil = new SolicitudPEVMovil();
		solicitudPEVMovil.setId(null);
		solicitudPEVMovil.setUsuarioCrea(getLoggedUserID());
		solicitudPEVMovil.setUsuarioModifica(getLoggedUserID());
		solicitudPEVMovil.setEstado("ACTIVO");
		return AppConstants.SOLICITUD_PEV_MOVIL_CREATE_VIEW;
	}

	/**
	 * 
	 * @return
	 */
	public String updateSolicitudPEVMovil() {
		Map params = getExternalContext().getRequestParameterMap();
		String solicitudPEVMovilDataIndex = (String) params
				.get("solicitudPEVMovilDataIndex");
		this.solicitudPEVMovil = (SolicitudPEVMovil) ((List) this.solicitudPEVMovilListModel
				.getWrappedData())
				.get(Integer.parseInt(solicitudPEVMovilDataIndex));
		return AppConstants.SOLICITUD_PEV_MOVIL_UPDATE_VIEW;
	}

	/**
	 * 
	 * @return
	 */
	public String cancelSolicitudPEVMovil() {
		return AppConstants.SOLICITUD_PEV_MOVIL_SEARCH_VIEW;
	}

	// --------------------------------------------------------------------
	// --- metodos para atender reglas de navegacion end()
	// --------------------------------------------------------------------

	// --------------------------------------------------------------------
	// --- getters and setters init()
	// --------------------------------------------------------------------

	/**
	 * 
	 */
	public SolicitudPEVMovil getSolicitudPEVMovilSearch() {
		return solicitudPEVMovilSearch;
	}

	/**
	 * 
	 * @param solicitudPEVMovilSearch
	 */
	public void setsolicitudPEVMovilSearch(SolicitudPEVMovil solicitudPEVMovilSearch) {
		this.solicitudPEVMovilSearch = solicitudPEVMovilSearch;
	}

	/**
	 * 
	 * @return
	 */
	public DataModel getsolicitudPEVMovilListModel() {
		return solicitudPEVMovilListModel;
	}

	/**
	 * 
	 * @param solicitudPEVMovilListModel
	 */
	public void setsolicitudPEVMovilListModel(DataModel solicitudPEVMovilListModel) {
		this.solicitudPEVMovilListModel = solicitudPEVMovilListModel;
	}

	/**
	 * 
	 * @return
	 */
	public SolicitudPEVMovil getSolicitudPEVMovil() {
		return solicitudPEVMovil;
	}

	/**
	 * 
	 * @param solicitudPEVMovil
	 */
	public void setsolicitudPEVMovil(SolicitudPEVMovil solicitudPEVMovil) {
		this.solicitudPEVMovil = solicitudPEVMovil;
	}

	/**
	 * obtencion del servicio solicitudPEVMovilService
	 * 
	 * @return
	 */
	public ISolicitudPEVMovilService getSolicitudPEVMovilService() {
		return solicitudPEVMovilService;
	}

	/**
	 * establecimiento del servicio solicitudPEVMovilService, la inyeccion de la
	 * dependencia la cubre SpringFramework
	 * 
	 * @param solicitudPEVMovilService
	 */
	public void setSolicitudPEVMovilService(
			ISolicitudPEVMovilService solicitudPEVMovilService) {
		this.solicitudPEVMovilService = solicitudPEVMovilService;
	}

	// --------------------------------------------------------------------
	// --- getters and setters end()
	// --------------------------------------------------------------------

}
